<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>

</head>

<body>
    <div id="app">
        <p>{{firstName}}</p>
        <p>{{lastName}}</p>
        <p>{{fullName}}</p>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                firstName: 'Foo',
                lastName: 'Bar',
                //fullName: 'Foo Bar'
            },
            watch: {
                firstName: function(val){
                    this.fullName = val + ' ' + this.lastName;
                },
                lastName: function(val){
                    this.fullName = this.firstName + ' ' + val;
                }
            },
            computed: {
                fullName: {
                    get: function(){
                        return this.firstName + ' ' + this.lastName;
                    },
                    set: function(newValue){
                        var names = newValue.split('');
                        this.firstName = names[0];
                        this.lastName = names[names.length - 1];
                    }
                }
            }
        })
    </script>
</body>

</html>